package br.com.vestibulation.dao;

import br.com.vestibulation.bean.Usuario;
import java.util.ArrayList;

public class UsuarioDAO extends ConnectionFactory{
    public boolean cadastrarUsuario(Usuario usuario){
        boolean sucesso = false;
        try {
            if(abrir()){
                stmt = conn.prepareStatement("INSERT INTO Login (usuario, senha, isAdmin) VALUES (?, ?, ?)");
                stmt.setString(1, usuario.getUsuario().toLowerCase());
                stmt.setString(2, usuario.getSenha());
                stmt.setInt(3, 0);
                stmt.executeUpdate();
                
                stmt = conn.prepareStatement("INSERT INTO Usuario (usuario, nmUsuario, sexoUsuario) VALUES (?, ?, ?)");
                stmt.setString(1, usuario.getUsuario().toLowerCase());
                stmt.setString(2, usuario.getNome());
                stmt.setString(3, usuario.getSexo());
                stmt.executeUpdate();
                
                sucesso = true;
            }
        } catch (Exception ex) {
        } finally{
            fechar();
        }
        return sucesso;
    }
    
    public boolean updateUsuario(Usuario usuario){
        boolean sucesso = false;
        try{
            if(abrir()){
                stmt = conn.prepareStatement("UPDATE usuario SET nmUsuario = ?, sexoUsuario = ? WHERE usuario = ?");
                stmt.setString(1, usuario.getNome());
                stmt.setString(2, usuario.getSexo());
                stmt.setString(3, usuario.getUsuario().toLowerCase());
                stmt.executeUpdate();
                sucesso = true;
            }
        } catch(Exception ex){
        } finally{
            fechar();
        }
        return sucesso;
    }
    
    public void excluirUsuario(String usuario){
        try {
            if(abrir()){
                stmt = conn.prepareStatement("DELETE FROM usuario WHERE usuario = ?");
                stmt.setString(1, usuario);
                stmt.executeUpdate();
                
                stmt = conn.prepareStatement("DELETE FROM login WHERE usuario = ?");
                stmt.setString(1, usuario);
                stmt.executeUpdate();
            }
        } catch (Exception ex) {
        } finally{
            fechar();
        }
    }
    
    public ArrayList<Usuario> listarUsuarios(){
        ArrayList<Usuario> lista = new ArrayList<Usuario>();
        try {
            if(abrir()){
                stmt = conn.prepareStatement("SELECT usuario, nmUsuario, sexoUsuario FROM usuario");
                rs = stmt.executeQuery();
                while(rs.next()){
                    Usuario usuario = new Usuario();
                    usuario.setUsuario(rs.getString("usuario"));
                    usuario.setNome(rs.getString("nmUsuario"));
                    usuario.setSexo(rs.getString("sexoUsuario"));
                    lista.add(usuario);
                }
            }
        } catch (Exception ex) {
        } finally{
            fechar();
        }
        return lista;
    }

    public boolean editarPerfil(Usuario usuario){
        boolean sucesso = false;
        try{
            if(abrir()){
                stmt = conn.prepareStatement("UPDATE login SET senha = ? WHERE usuario = ?");
                stmt.setString(1, usuario.getSenha());
                stmt.setString(2, usuario.getUsuario());
                stmt.executeUpdate();
                stmt = conn.prepareStatement("UPDATE usuario SET nmUsuario = ?, sexoUsuario = ? WHERE usuario = ?");
                stmt.setString(1, usuario.getNome());
                stmt.setString(2, usuario.getSexo());
                stmt.setString(3, usuario.getUsuario());
                stmt.executeUpdate();
                sucesso = true;
            }
        }catch(Exception ex){
        } finally{
            fechar();
        }
        return sucesso;
    }    
}
